package br.com.fidalgotecnologia.seguranca.data;

import java.util.List;

import javax.persistence.EntityManager;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;

import br.com.fidalgotecnologia.core.data.abs.BaseDAO;
import br.com.fidalgotecnologia.seguranca.entity.Usuario;

public class UsuarioDAO extends BaseDAO<Usuario>{
	private static UsuarioDAO instance;

	public static UsuarioDAO getInstance() {
		if(instance == null){
			instance = new UsuarioDAO();
		}
		return instance;
	}

	@Override
	public Class<Usuario> getClasse() {
		return Usuario.class;
	}
	
	public Usuario getUsuario(Usuario usuario){
		Usuario retorno = null;
		try {
			beginUserTransaction();
			
			EntityManager em = getEntityManager();
		    Session session = (Session)em.getDelegate();
		    session.beginTransaction();
		    Criteria criteria = session.createCriteria(getClasse());
		    if(usuario.getLogin()!=null){
		    	criteria.add(Restrictions.eq("login", usuario.getLogin()));
		    }
		    if(usuario.getSenha()!=null){
		    	criteria.add(Restrictions.eq("senha", usuario.getSenha()));
		    }
		    retorno = (Usuario) criteria.uniqueResult();
		    session.getTransaction().commit();
		    commitUserTransaction();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	    return retorno;
	}

}
